package pers.jason.wppm.auth.web.dao;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import pers.jason.wppm.api.entity.auth.User;
import pers.jason.wppm.auth.api.dto.AuthenticationCondition;
import pers.jason.wppm.auth.api.dto.UserInsertCondition;
import pers.jason.wppm.auth.api.dto.UserQueryCondition;
import pers.jason.wppm.auth.api.dto.UserUpdateCondition;

import java.util.List;

/**
 * 
 * @author Jason
 * @Date 2018-10-25 17:59
 *
 */
@Mapper
public interface UserDao {

	/**
	 * 通过用户ID获取详细信息
	 * @param id
	 * @return
	 */
	User getUserInfoById(@Param("id") String id);

	/**
	 * 根据登录名获取用户信息（认证动作使用）
	 * @param authenticationCondition
	 * @return
	 */
	User findUserForLogin(@Param("authtication") AuthenticationCondition authenticationCondition);
	
	/**
	 * 条件查询用户列表
	 * @param page
	 * @param rows
	 * @param sort
	 * @param user 
	 * @return
	 */
	List<User> queryUserList(@Param("page") int page, @Param("rows") int rows, @Param("sortColumn") String sortColumn, @Param("sort") String sort, @Param("user") UserQueryCondition user);

	/**
	 * 修改用户基本信息（不包含登录名和密码）
	 * @param userUpdateCondition
	 * @return
	 */
	int updateUserInfo(@Param("user") UserUpdateCondition userUpdateCondition);
	
	/**
	 * 删除用户
	 * @param id
	 * @return
	 */
	int deleteUser(@Param("id") String id);

	/**
	 * 新增
	 * @param userInsertCondition
	 * @return
	 */
	int registUserByMobile(@Param("user") UserInsertCondition userInsertCondition);
}
